#ifndef DATAACCESSOR_H
#define DATAACCESSOR_H

#include <QString>
#include <QDateTime>
#include <QSqlDatabase>
#include "tools/database/dbqueryresult.h"

class DataAccessor
{
public:
    DataAccessor();

    // 创建所有数据表
    static bool createTables(QSqlDatabase db);

    // 向好友申请表添加一条记录
    static bool insertNewFriendApplication(QSqlDatabase db, const int& applicantId,
                    const QString& nickname, const QString& verifyInfo, const QDateTime& datetime,
                    const int& serverId, const int& status);

    // 在好友申请表中，通过serverId修改status 1为接受 2为拒绝
    static bool updateStatusById(QSqlDatabase db, const int& serverId,
                                 const int& status, const QString& alias);

    // 在好友申请表中，取出全部记录
    static bool findAllFriendApplications(QSqlDatabase db, QVector<FriendApplication>& results);

    // 在好友关系表中，添加一条记录
    static bool insertNewFriendship(QSqlDatabase db, const int& friendId, const QString& nickname,
                                     const QString& alias, const QDateTime& resultTime);

    // 在好友关系表中，取出所有好友
    static bool findAllFriendships(QSqlDatabase db, QVector<Friendship>& results);

    // 在聊天消息表中，插入一条记录
    static bool insertChatMsg(QSqlDatabase db, const int& friendId, const QString& chatMsg,
                              const QDateTime& datetime, const bool& isMeSend);

    // 在聊天消息表中，根据friendId查询聊天记录
    static bool findAllChatMsgByFriendId(QSqlDatabase db, const int& friendId,
                                         QVector<ChatMsgQuery>& results);
};

#endif // DATAACCESSOR_H
